#include "stdafx.h"
#include <algorithm>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include "detail/bmock_argument.hpp"

namespace bmock {
	argument::argument(arg_val *const v)
		:value_(v)
	{}

	bool argument::validate(const arg_checker &chk,const arg_val_str &v) const {
		return value_->validate(chk,v);
	}

	bool argument::validate_no_msg(const arg_checker &chk, const arg_val_str &v) const {
		return value_->validate_no_msg(chk,v);
	}

	bool argument::update(const arg_checker &chk,const arg_val_str &v) const {
		return value_->update(chk,v);
	}

	arg_val_str argument::get_value(const arg_checker &chk) const {
		return value_->get_value(chk);
	}

	void argument::print(std::ostream &os) const {
		if(os.tellp()>0) os << ',';
		value_->print(os);
	}
}

namespace std {
	std::ostream &operator <<(std::ostream &os,const bmock::argument &arg) {
		arg.print(os);
		return os;
	}
}
